﻿
	 /**
	   时间戳
     简介:
	   时间戳是把数据的Hash值发送到时间戳服务器，时间戳服务器把这个Hash值和当前的时间值以及其他相关信息签名返回给用户。
       时间戳主要用于证明数据在某个时间之前已经存在。发送给时间戳服务器的是数据的Hash值，并不是数据本身。
       时间戳服务器的返回包括一个状态值和一个时间戳Token。时间戳Token是个SignedData结构，其签名的内容主要包括Hash算法和Hash值、
       时间戳序列号、时间戳的时间值、时间戳服务器的策略OID等。获取时间戳需要预先配置好时间戳地址。
     **/

     /*	 
    	获取时间戳token
     */
	function JSTest_TimeStamp_GetToken()
	{

		  /*
			获取时间戳token 使用NetcaPKI的timeStampGetToken方法，
	      */

		  var  token=NetcaPKI.timeStampGetToken(TimeStampGetTokenData.value);
		  var  code=NetcaPKI.getLastError();
		  if(NetcaPKI.getLastError()!=NetcaPKI.OK)
          {
                alert(NetcaPKI.getLastErrorMsg());
				return;
          } 
          //将token 字节数组做base64编码
		  var  base64String= NetcaPKI.base64Encode(token,NetcaPKI.BASE64_NO_NL);
		  TimeStampGetTokenEncode.value=base64String;

	}	

	 /*	 
    	验证时间戳token
     */

    function JSTest_TimeStamp_VerifyToken()
	{
	 
		   var data="";
 
		   var  token=NetcaPKI.base64Decode(TimeStampVerifyToken.value);

		   /*
			验证时间戳token 使用NetcaPKI的timeStampVerifyToken方法，
	       */

	       var  time=NetcaPKI.timeStampVerifyToken(TimeStampVerifyTokenData.value,token);    

           
           //如果返回的时间无效认定验证错误，验证成返回时间戳的时间
		   if(NetcaPKI.isValidTime(time))
		   {
		   	    //验证成功
		   	    data=time;
				alert(data);
		   }
		   else
		   {
				alert("验证失败");
		   }
	 
	}	



     /*	 
    	获取时间戳时间
     */

	function JSTest_TimeStamp_GetTime()
	{
	
	     /*
	     	获取时间戳token 使用NetcaPKI的timeStampGetTime方法，
	     */
      
		  var time=NetcaPKI.timeStampGetTime();
		  if(NetcaPKI.getLastError()!=NetcaPKI.OK)
          {
            alert(NetcaPKI.getLastErrorMsg());
			return;
          }  

          //成功返回时间戳时间，Date类型
	 	  TimeStampGetTimeTime.value=time;

	}


     /*	 
    	获取时间戳服务器证书
     */

    function JSTest_TimeStamp_GetTsaCert()
	{
		   /*
	     	获取时间戳token 使用NetcaPKI的timeStampGetTsaCert方法，
	       */
		    
		   var  ServerCert=NetcaPKI._baseObject.timeStampGetTsaCert();
		   if(NetcaPKI.getLastError()!=NetcaPKI.OK)
           {
                alert(NetcaPKI.getLastErrorMsg());
				return;
           }  

           //获取证书的base64编码
	       var  Enccode= ServerCert.encode(NetcaPKI.CERT_ENCODE_BASE64_NO_NL);     
		   TimeStampGetTsaCertEncode.value=Enccode;

		   //显示证书
		   ServerCert.Display();
			 
	}	